package com.dc.modules.sys.menu.repository;

import java.util.List;

import com.dc.commons.jpa.repository.BaseTreeRepository;
import com.dc.commons.jpa.repository.TreeAbleRepository;
import com.dc.commons.status.DataStatus;
import com.dc.modules.sys.menu.domain.DcSysMenu;
import com.dc.modules.sys.menu.enumer.MenuType;

/*******************************************************************************<P>
 * 文件名: DcSysMenuRepository.java <br>
 * 版本: 1.0<br>
 * 描述:<br>
 * 版权所有: <br>
 * <P>
 * 创建者: 王建栋 <br>
 * 创建日期: 2016年6月22日 下午4:20:14<br>
 * 修改者: <br>
 * 修改日期: <br>
 * 修改说明: <br>
 ******************************************************************************/
public interface DcSysMenuRepository  extends BaseTreeRepository<DcSysMenu>,TreeAbleRepository<DcSysMenu,String>{

	/**
	 *  根据状态查找所有有的菜单 并且按照级别及优先级排序
	 * @param dataStatus
	 * @return list Menu
	 */
	public List<DcSysMenu> findByDataStatusOrderByLevelNoAscDisplayNoAsc(DataStatus dataStatus);
	
	/**
	 *  根据状态, 菜单类型查找所有有的菜单 并且按照级别及优先级排序
	 * @param dataStatus
	 * @param menuTypeList
	 * @return list Menu
	 */
	public List<DcSysMenu> findByDataStatusAndMenuTypeInOrderByLevelNoAscDisplayNoAsc(DataStatus dataStatus,List<MenuType> menuTypeList);
	
	/**
	 * 根据状态 上级Key 查找所有有的菜单 并且按照优先级排序
	 * @param dataStatus
	 * @param parentKey
	 * @return list Menu
	 */
	public List<DcSysMenu> findByDataStatusAndParentKeyOrderByDisplayNoAsc(DataStatus dataStatus,String parentKey);
	
	/**
	 * 根据状态 上级Key 查找所有有的菜单 并且按照优先级排序
	 * @param dataStatus
	 * @param parentKey
	 * @param menuTypeList
	 * @return list Menu
	 */
	public List<DcSysMenu> findByDataStatusAndParentKeyAndMenuTypeInOrderByDisplayNoAsc(DataStatus dataStatus,String parentKey,List<MenuType> menuTypeList);

}
